home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / PROGRAMM / ASSEMBLE / H055.ZIP / DEMO / PLOTXY.ALC < prev    next >
Text File  |  1987-08-20  |  4KB  |  121 lines

  1.     TITLE 'PLOTXY.ALC - PLOT Y=SIN(X) USING 320 X 200 COLOR SCREEN'
  2. *
  3. * PGM-ID.  GRAPH.ALC
  4. * AUTHOR.  DON HIGGINS
  5. * DATE.    08/20/87
  6. * REMARKS. PLOT SIN WAVE ON 320X200 SCREEN USING 80X87 SCIENTIFIC
  7. *          SUBROUTINE PACKAGE SIN FUNCTION.
  8. *
  9. PLOTXY   CSECT
  10.     LR    R12,R15
  11.     USING PLOTXY,R12
  12.     LA    R2,=C' PLOTXY.ALC GRAPH OF SIN WAVE$'
  13.     SVC   WTO
  14.     LA    R2,=C' THIS PGM REQUIRES COLOR 320X200 MONITOR AND 80X87$'
  15.     SVC   WTO
  16.     LA    R2,=C' HIT ANY KEY TO START$'
  17.     SVC   WTO
  18.     SVC   READCON
  19.     ICM   R0,B'0011',=AL1(VIOSETM,VIOM320)
  20.     SVC   VIDEOIO             SET GRAPHIC 320 X 200 MODE
  21.     LD    FR0,=D'0'
  22.     STD   FR0,XMIN    XMIN=0.
  23.     STD   FR0,X       X=XMIN
  24.     L     R15,=V(PI)
  25.     BALR  R14,R15
  26.     MD    FR0,=D'2'
  27.     STD   FR0,XMAX    XMAX=2*PI
  28.     SD    FR0,XMIN
  29.     DD    FR0,XPIXILS
  30.     STD   FR0,XINC    XINC=(XMAX-XMIN)/XPIXILS
  31.     LD    FR2,=D'1'
  32.     DDR   FR2,FR0
  33.     STD   FR2,XSCALE  XSCALE=XPIXILS/(XMAX-XMIN)
  34.     LD    FR0,=D'-1'
  35.     STD   FR0,YMIN    YMIN=-1 FOR SIN
  36.     LD    FR0,=D'1'
  37.     STD   FR0,YMAX    YMAX=1 FOR SIN
  38.     SD    FR0,YMIN
  39.     LD    FR2,YPIXILS
  40.     DDR   FR2,FR0
  41.     STD   FR2,YSCALE  YSCALE=YPIXILS/(YMAX-YMIN)
  42. LOOP     EQU   *           PLOT Y=F(X) FOR X=XMIN,XMAX,XINC
  43.     LD    FR0,X
  44.     LDR   FR2,FR0     SAVE X IN FR2 FOR DEBUG
  45.     L     R15,=V(SIN)
  46.     BALR  R14,R15     FR0=SIN(X)
  47.     LDR   FR4,FR0     SAVE SIN(X) IN FR4 FOR DEBUG
  48.     STD   FR0,Y
  49.     BAL   R14,PLOT
  50.     LD    FR0,X
  51.     AD    FR0,XINC
  52.     STD   FR0,X
  53.     CD    FR0,XMAX
  54.     BL    LOOP
  55. EOJ      EQU   *
  56.     SVC   READCON     HOLD SCREEN UNTIL NEXT KEY
  57.     ICM   R0,B'0011',=AL1(VIOSETM,VIOM2480)
  58.     SVC   VIDEOIO             SET 24X80 CHARACTER MODE
  59.     SVC   EXIT        EXIT TO MS-DOS
  60. PLOT     EQU   *           PLOT (X,Y) SCALED TO 320X200 SCREEN
  61.     ST    R14,SAVE14
  62.     LD    FR0,Y
  63.     SD    FR0,YMIN
  64.     MD    FR0,YSCALE
  65.     L     R15,=V(INT)
  66.     BALR  R14,R15      R0=INT((Y-YMIN)*YSCALE)
  67.     ST    R0,IY
  68.     LR    R4,R0        SAVE IY IN R4 FOR DEBUG
  69.     LD    FR0,X
  70.     SD    FR0,XMIN
  71.     MD    FR0,XSCALE
  72.     L     R15,=V(INT)
  73.     BALR  R14,R15      R0=INT((X-XMIN)*XSCALE)
  74.     ST    R0,IX
  75.     LR    R2,R0        SAVE IX IN R2 FOR DEBUG
  76.     ICM   R0,B'0011',=AL1(VIOPSET,VIOPCV)
  77.     L     R14,IX
  78.     L     R15,IYPIXILS
  79.     S     R15,IY
  80.     SVC   VIDEOIO      SET PIXIL AT (IX,IY)
  81.     L     R14,SAVE14
  82.     BR    R14
  83. R0       EQU   0
  84. R1       EQU   1
  85. R2       EQU   2
  86. R3       EQU   3
  87. R4       EQU   4
  88. R5       EQU   5
  89. R12      EQU   12
  90. R14      EQU   14
  91. R15      EQU   15
  92. FR0      EQU   0         FLOATING POINT REG 0
  93. FR2      EQU   2
  94. FR4      EQU   4
  95. FR6      EQU   6
  96. VIOSETM  EQU   0         AH VALUE FOR VIDEOIO SET MODE (SEE A-48)
  97. VIOM320  EQU   4         AL VALUE FOR 320 X 200 MODE
  98. VIOM2480 EQU   2         AL VALUE FOR 24 X 80 BW CHARACTER MODE
  99. VIOPSET  EQU   12        AH VALUE FOR VIDEOIO SET BIT (SEE A-49)
  100. VIOPCV   EQU   1         AL VALUE FOR COLOR VALUE
  101. VIDEOIO  EQU   X'80'+X'10' 8086 VIDEO BIOS INTERRUPT SVC
  102. EXIT     EQU   0         EXIT TO MS-DOS
  103. WTO      EQU   209       WRITE TO OPERATOR
  104. READCON  EQU   207       READ KEYBOARD CHARACTER INTO R0
  105. XPIXILS  DC    D'318'    320-2 TO AVOID MISSING PIXILS AT EDGE
  106. YPIXILS  DC    D'198'    200-2 TO AVOID MISSING PIXILS AT EDGE
  107. IYPIXILS DC    F'199'    REVERSE IY TO MOVE ORIGIN FROM UPPER LEFT TO LOWER
  108. X        DC    D'0'
  109. XMAX     DC    D'0'
  110. XMIN     DC    D'0'
  111. XINC     DC    D'0'      CALC (XMAX-XMIN)/XPIXILS
  112. XSCALE   DC    D'0'      CALC XPIXILS/(XMAX-XMIN)
  113. Y        DC    D'0'
  114. YMAX     DC    D'0'
  115. YMIN     DC    D'0'
  116. YSCALE   DC    D'0'      CALC YPIXILS/(YMAX-YMIN)
  117. IX       DC    F'0'
  118. IY       DC    F'0'
  119. SAVE14   DC    A(0)
  120.     END   PLOTXY
  121.